/*
 * Create in 2013-4-11 下午11:32:48.
 */
package kit4j.util.io.file;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;

/**
 * 
 * @author MiniKnife
 * 
 */
public abstract class FileSystemUtil {

	/**
	 * 获取给定<code>Class</code>实例所在文件在当前系统中所在文件夹的绝对路径。特别的，如果该<code>Class</code>
	 * 实例包含在一个jar文件中，则返回该jar文件所在文件夹的绝对路径。
	 * 
	 * @param clazz
	 *            <code>Class</code>实例
	 * @param pathChartsetName
	 *            文件路径使用的字符集名称
	 * @return 给定<code>Class</code>实例所在文件在当前系统中所在文件夹的绝对路径。
	 * @throws UnsupportedEncodingException
	 *             如果需要参考字符编码，而指定的字符编码不被支持
	 * @throws NullPointerException
	 *             如果给定的<code>Class</code>实例为null
	 */
	public static String getAbsoluteDirPath(Class<?> clazz, String pathChartsetName)
			throws UnsupportedEncodingException {
		URL url = clazz.getProtectionDomain().getCodeSource().getLocation();
		String filePath = URLDecoder.decode(url.getPath(), pathChartsetName);
		if (filePath.endsWith(".jar")) {
			filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
		}
		File file = new File(filePath);
		
		return file.getAbsolutePath();
	}

}
